import pytest
from bs4 import BeautifulSoup
from API.login_bili import LoginApi
from config import logging_use
import logging

# 设置日志文件路径
log_file = "../test_logs/test_log.log"
# 获取日志记录器
logger = logging_use.setup_logger(
    log_file=log_file,
    log_level=logging.DEBUG,
    when='midnight',  # 每天轮转一次
    interval=1,
    backup_count=7  # 保留7个备份文件
)

#测试数据
loginData = LoginApi.get_loginData()
login_pa_data=LoginApi.get_interface_data()

#断言封装
def common_assert(rsp,status_cede,msg):
    # 提取title
    soup = BeautifulSoup(rsp.text, 'html.parser')
    login_tag = soup.select('title')[0].text
    flag1=False
    if(rsp.status_code == status_cede):
        logger.info('状态码正确')
        flag1=True
    if(not flag1):
        logger.error('状态码错误,服务器未正确响应')
    assert flag1, '状态码错误,服务器未正确响应'
    flag=False
    if('错误' in login_tag):
        logger.info(f'预期结果：包含错误，实际结果：{login_tag}')
        flag=True
    if(not flag):
        logger.error(f'预期结果：包含错误，实际结果：{login_tag}')
    assert flag,msg

class Test_loginl():

    def setup_class(self):
        logger.info('...开始执行哔哩轻小说登录接口测试，错误数据集登录测试')
    def teardown_class(self):
        logger.info('...结束执行哔哩轻小说登录接口测试，错误数据集登录测试')
    def setup_method(self):
        logger.info('...接口用户登录')
    def teardown_method(self):
        logger.info('...接口登录结束')

    @pytest.mark.parametrize('login_data',loginData)
    def test01_loginFailCase(self,login_data):
        data=login_data
        rsp=LoginApi.login(data)
        logger.info('登录测试数据: %s', data)
        common_assert(rsp,200,'错误登录数据登录成功缺陷')
        rsp.close()

    @pytest.mark.parametrize('dict_data',login_pa_data)
    def test02_loginInterfae_Parase(self,dict_data):
        data=dict_data
        rsp=LoginApi.login(data)
        logger.info('登录接口参数测试数据: %s', data)
        common_assert(rsp,200,'多参/少参成功登录缺陷')
        rsp.close()

